package languageObject.metatModel;

import uspeedd.metamodel.enumeration.TypeAssociationUspeed;
import utils.Utils;

/**
 * permet de lier une classe a une interface ou autre chose.
 */
public class LiaisonElement 
{
	private TypeAssociationUspeed type;
	private ElementObject element;
	private String cardinality;
	
	/**
	 * Constructeur par recopie
	 */
	public LiaisonElement(TypeAssociationUspeed type, ElementObject element, String cardinality) 
	{
		this.type = type;
		this.element = element;
		this.cardinality = cardinality;
	}
	
	/**
	 * Constructeur par defaut
	 */
	public LiaisonElement() 
	{
		this.type = null;
		this.element = null;
		this.cardinality = null;
	}

	/**
	 * getter and setteur
	 */
	public TypeAssociationUspeed getType(){return type;}
	public void setType(TypeAssociationUspeed type){this.type = type;}
	
	public ElementObject getElement(){return element;}
	public void setElement(ElementObject element){this.element = element;}
	
	public String getCardinality(){return cardinality;}
	public void setCardinality(String cardinality){this.cardinality = cardinality;}

	/**
	 * methode Object
	 */
	public boolean equals(Object o)
	{
		if(o == null) return false;
		
		if(o instanceof LiaisonElement)
		{
			LiaisonElement objet = (LiaisonElement) o;
			
			if(!Utils.equals(this.getType(), objet.getType())) return false;
			if(!Utils.equals(this.getElement(), objet.getElement())) return false;
			if(!Utils.equals(this.getCardinality(), objet.getCardinality())) return false;
			
			return true;
		}
		
		return false;
	}
}
